/********************************************
 * 功能说明: 
 * 模块名称: 
 * 系统名称: 
 * 软件版权: 
 * 系统版本: 1.0.0
 * 开发人员: zhangfb
 * 开发时间: 2019/5/29 21:25
 * 审核人员: 
 * 相关文档: 
 * 修改记录: 修改日期 修改人员 修改说明
 *********************************************/
package com.hyacinth.aurora.core.container;

import com.hyacinth.aurora.constant.ServerChannel;
import com.hyacinth.aurora.core.container.bootstrap.AuroraBootstrap;
import com.hyacinth.aurora.core.container.bootstrap.BootStrap;
import com.hyacinth.aurora.core.container.bootstrap.NettyBootStrap;
import com.hyacinth.aurora.core.context.AppConfig;
import com.hyacinth.aurora.utils.Assert;

/**
 * 服务管理器
 * @author zhangfb
 * @version 1.0.0.1
 * @since JDK 1.8
 */
public class ServerManager {

    /**
     * 获取服务启动引导通道
     * @return BootStrap
     */
    public static BootStrap getBootStrap() {
        ServerChannel serverChannel = AppConfig.INSTANCE.getServerChannel();
        Assert.notNull(serverChannel, "server channel is null！");
        AuroraBootstrap bootstrap = null;
        switch (serverChannel) {
            case Netty:
                bootstrap = new NettyBootStrap();
                break;
            case HttpClient:
                // TODO
                break;
            case WebSocket:
                // TODO
                break;
        }
        return bootstrap;
    }

    public static void start() {
        start(getBootStrap());
    }

    public static void start(BootStrap bootStrap) {
        Assert.notNull(bootStrap, "server bootstrap is null! ");
        bootStrap.start();
    }
}
